package datenverwaltung;

import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 * Repräsentiert einen Tracker
 * 
 * @author Felix
 * 
 */
@XmlRootElement(namespace = "Tracker")
public class Tracker implements Comparable<Tracker> {

	private String id;
	@XmlTransient
	private String passwort;
	@XmlTransient
	private float zuverlaessigkeit;
	@XmlTransient
	private int anzMeldungen;
	@XmlTransient
	private int anzAktiv;
	@XmlTransient
	private int anzInaktiv;
	@XmlTransient
	private int anzGesamt;
	private String vorname, nachname, email, tel;
	private Adresse adresse;

	public Tracker() {
	}

	/**
	 * Initialisiert Attribute
	 * 
	 * @param id
	 * @param zuverlaessigkeit
	 * @param anzMeldugnen
	 * @param anzAktiv
	 * @param anzInaktiv
	 * @param anzBewertungen
	 */
	public Tracker(String id, float zuverlaessigkeit, int anzMeldungen,
			int anzAktiv, int anzInaktiv, int anzBewertungen) {
		this.id = id;
		this.zuverlaessigkeit = zuverlaessigkeit;
		this.anzMeldungen = anzMeldungen;
		this.anzAktiv = anzAktiv;
		this.anzInaktiv = anzInaktiv;
		this.anzGesamt = anzBewertungen;
		this.adresse = new Adresse();
	}

	/**
	 * Konstruktor zum Abspeichern des Trackers in der XML-Datei.
	 * 
	 * @param id
	 * @param vorname
	 * @param nachname
	 * @param email
	 * @param tel
	 * @param wohnort
	 */
	public Tracker(String id, String vorname, String nachname, String email,
			String tel, Adresse adresse) {
		super();
		this.id = id;
		this.vorname = vorname;
		this.nachname = nachname;
		this.email = email;
		this.tel = tel;
		this.adresse = adresse;
	}

	/**
	 * Konstruktor der nur ID und Passwort setzt
	 * 
	 * @param id
	 *            Tracker-ID
	 * @param passwort
	 *            Passwort
	 */
	public Tracker(String id, String passwort) {
		super();
		this.id = id;
		this.passwort = passwort;
		this.adresse = new Adresse();
	}

	public String getId() {
		return id;
	}

	public String getPasswort() {
		return passwort;
	}

	public float getZuverlaessigkeit() {
		return zuverlaessigkeit;
	}

	public int getAnzMeldungen() {
		return anzMeldungen;
	}

	public int getAnzAktiv() {
		return anzAktiv;
	}

	public int getAnzInaktiv() {
		return anzInaktiv;
	}

	public int getAnzGesamt() {
		return anzGesamt;
	}

	public String getVorname() {
		return vorname;
	}

	public String getNachname() {
		return nachname;
	}

	public String getEmail() {
		return email;
	}

	public void setVorname(String vorname) {
		this.vorname = vorname;
	}

	public void setNachname(String nachname) {
		this.nachname = nachname;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public void setPasswort(String passwort) {
		this.passwort = passwort;
	}

	public void setId(String id) {
		this.id = id;
	}

	@Override
	public String toString() {
		return id + " " + " " + vorname + " " + nachname + " " + email + " "
				+ adresse;
	}

	public Adresse getAdresse() {
		return adresse;
	}

	public void setAdresse(Adresse adresse) {
		this.adresse = adresse;
	}

	public String getTel() {
		return tel;
	}

	public void setTel(String tel) {
		this.tel = tel;
	}

	@Override
	public int compareTo(Tracker o) {
		// if (this.nachname.compareTo(o.nachname) != 0)
		// return this.nachname.compareTo(o.nachname);
		// else
		// return this.vorname.compareTo(o.vorname);
		return Integer.parseInt(this.id) - Integer.parseInt(o.id);
	}

	/**
	 * Liefert eine Information zum Tracker, zum Ausgeben in der Tabelle
	 * 
	 * @param i
	 * @return
	 */
	public String get(int i) {
		switch (i) {
		case 0:
			return id;
		case 1:
			return Float.toString(zuverlaessigkeit);
		case 2:
			return Integer.toString(anzMeldungen);
		case 3:
			return Integer.toString(anzAktiv);
		case 4:
			return Integer.toString(anzInaktiv);
		case 5:
			return Integer.toString(anzGesamt);
		case 6:
			return nachname;
		case 7:
			return vorname;
		case 8:
			return email;
		case 9:
			return adresse.getWohnort();
		case 10:
			return adresse.getPlz();
		case 11:
			return adresse.getStrasse();
		case 12:
			return tel;
		default:
			return "";
		}
	}
}
